[C] Apaga linha em um Arquivo
Publicado por Enzo de Brito Ferber 06/03/2006
[ Hits: 17.846 ]
Homepage: http://www.maximasonorizacao.com.br
Este script apaga a linha "dita" por um
usuário de um arquivo "dito" pelo mesmo.
Código de minha autoria bem comentado
e simples.... ajuda bastante a entender
manipulação de arquivos, aloção
dinamina de memoria, e maniputação de
strings....
/********************************************************************************************* Programa: apaga.c Autor: Enzo Ferber 'Slackware_10' Propósito: Apaga linha definida por usuário em um arquivo **********************************************************************************************/ #include <stdio.h> #include <stdlib.h> int abreArquivo(char arquivo[]){ FILE *arqEntrada; FILE *arqSaida; int line = 0; int linha = 1; int i; char textoArquivo[100]; char *output; output = (char *)malloc((strlen(arquivo)+strlen(".editado")) * sizeof(char)); strcat(output, arquivo); strcat(output, ".editado"); if((arqEntrada = fopen(arquivo, "r")) == 0){ //testa se o arquivo pode ser aberto printf("Impossivel abrir arquivo...\n"); //informa o erro exit(1); //finaliza execução } if((arqSaida = fopen(output, "w")) == 0){ //testa se o arquivo pode ser aberto printf("Impossivel abrir arquivo...\n"); //informa o erro exit(1); //finaliza execução } printf("Digite a linha a ser apagada no arquivo: "); //pede a linha scanf("%d", &line); //le a linha e armazena na variável 'line' rewind(arqEntrada); //certifica de que o cursor esta no primeiro caractere do arquivo for(i = 0; !feof(arqEntrada);i++){ //incrementa 'i' enquando não for fim de arquivo memset(textoArquivo, '{FONTE}', 100); //inicializa e/ou limpa string 'textoArquivo' fgets(textoArquivo, 101, arqEntrada); //pega uma string de 100 caracteres if(linha == line){ //se a linha for a escolhida fputc('\n', arqSaida); //troca a linha que o usuario quer por nova linha linha = linha + 1; //incrementa o contador de linhas continue; //volta ao inicio do loop sem executar o resto } linha = linha + 1; //incrementa o contador de linas fputs(textoArquivo, arqSaida); //coloca a string 'textoArquivo' no arquivo encoded.txt } printf("O arquivo output %c: %s\n",233, output); free(output); //desaloca espaço alocado para string contendo novo do novo arquivo fclose(arqEntrada); //fecha a stream 'arqEntrada' fclose(arqSaida); //fecha a stream 'arqSaida' } int main(void){ //rotina principal do programa char arquivo[100]; printf("Digite o caminho completo do arquivo: "); __fpurge(stdin); //limpa buffer de entrada scanf("%[^\n]", arquivo); abreArquivo(arquivo); }
Montando string de conexão para banco de dados em C# através de um arquivo xml personalizado
Transformando uma sequencia de binário em executável
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (14)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)
Pendrive não formata de jeito nenhum (4)